/*
 *
3
1.8
a
Min(const char *, const char *)
aaa

 */

#include <iostream>
#include <cstring>
using namespace std;
template <typename T>
T Min(T a, T b){
	return a<b?a:b;
}
template <>
const char *Min(const char *a, const char *b){
	cout << "Min(const char *, const char *)" << endl;
	return (strcmp(a,b)>0)?b:a;
}
int main(void){
	int m=9, n=3;
	double d1=1.8, d2=3.4;
	cout << Min(m,n) << endl;
	cout << Min(d1, d2) << endl;
	cout << Min('a', 'b') << endl;
	cout << Min("aaa", "bbb") << endl;
	return 0;
}
